<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>观察者模式</title>
</head>
<body>
 观察者模式指的是一个对象（Subject）维持一系列依赖于它的对象（Observer），当有关状态发生变更时 Subject 对象则通知一系列 Observer 对象进行更新。
<script>
// 发布者
class Subject {
	constructor () {
		// 订阅者列表
		this.subs = [];
	}
	// 增加订阅者
	add (sub) {
		this.subs.push(sub);
	}
	// 发布消息
	notify () {
		this.subs.forEach((item) => {
			item.update();
		})
	}
}
// 观察者   订阅者
class Observer {
	constructor (name) {
		this.name = name;
	}
	// 订阅者的更新事件
	update () {
		console.log('update:', this.name);
	}
}
</script>
<script>
// 测试代码
let sub = new Subject();//发布者
let o1 = new Observer('o1');//订阅者1
let o2 = new Observer('o2');//订阅者2
let o3 = new Observer('o3');//订阅者3
sub.add(o1);
sub.add(o2);
sub.add(o3);
console.log(sub);
sub.notify();
</script>
</body>
</html>